package edu.corn.job.core.processor;

import edu.corn.job.core.engine.mutex.MutexEnum;

import java.util.Collections;
import java.util.Set;

public interface MutexProcessor {

    /**
     * 获取该processor的互斥量。
     *
     * @return 返回互斥量。
     */
    default Set<? extends Enum<?>> mutexes() {
        return Collections.emptySet();
    }

    /**
     * 返回获取锁的操作枚举。
     * @return 枚举，有全量，部分，无。
     */
    default MutexEnum mutexOp() {
        return MutexEnum.NONE;
    }

    /**
     * 是否未全局互斥job。
     * @return 默认为否。如果返回为真，需要lockpool保证同一时刻只有一个该类型job可以执行，而且在全局层面上获得的互斥量也是全局的。
     */
    default boolean isGlobal(){
        return false;
    }

}
